package com.example.gui.todos.controller;

import com.example.gui.todos.model.Todo;
import com.example.gui.todos.view.TodoView;
import javafx.scene.control.Alert;
import javafx.scene.control.ButtonType;
import javafx.scene.control.ListView;
import javafx.scene.control.TextField;  

public class TodoController {  
    private final TodoView view; // 持有视图引用  

    public TodoController(TodoView view) {
        this.view = view;  
    }  

    // 1. 添加待办事项  
    public void handleAddTodo() {  
        TextField inputField = view.getInputField();  
        String content = inputField.getText().trim();  

        if (!content.isEmpty()) { // 输入不为空时添加  
            view.getTodoList().add(new Todo(content)); // 数据列表添加新待办（ListView自动刷新）
            inputField.clear(); // 清空输入框  
        } else {  
            showAlert("提示", "请输入待办事项内容！");  
        }  
    }  

    // 2. 删除选中的待办事项  
    public void handleDeleteSelected() {  
        ListView<Todo> listView = view.getTodoListView();  
        // 过滤出已选中的待办事项并删除（Java 8 Stream API）  
        view.getTodoList().removeIf(todo -> todo.isCompleted());  
    }  

    // 3. 清空所有待办事项（二次确认）  
    public void handleClearAll() {  
        Alert alert = new Alert(Alert.AlertType.CONFIRMATION);  
        alert.setTitle("确认");  
        alert.setHeaderText(null);  
        alert.setContentText("确定要清空所有待办事项吗？");  

        // 点击确认按钮时清空列表  
        alert.showAndWait().ifPresent(response -> {  
            if (response == ButtonType.OK) {
                view.getTodoList().clear();  
            }  
        });  
    }  

    // 辅助方法：显示提示对话框  
    private void showAlert(String title, String message) {  
        Alert alert = new Alert(Alert.AlertType.INFORMATION);  
        alert.setTitle(title);  
        alert.setHeaderText(null);  
        alert.setContentText(message);  
        alert.showAndWait();  
    }  
}